/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Viaje;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Eugenio
 */
public class ManejadorDeViaje implements Manejador{

    private Conexion con;
    private ArrayList<Viaje> viajes;
    private static ManejadorDeViaje instancia;
    private PreparedStatement ps;
    private ResultSet rs;

    public ManejadorDeViaje (){
        con = Conexion.getInstancia();
    }

    public static ManejadorDeViaje getInstancia(){
        if(instancia==null){
            instancia=new ManejadorDeViaje();
        }

        return instancia;
    }

    public ArrayList<Viaje> getViajes(){
        viajes = new ArrayList<Viaje>();
        String sql ="select * from viaje";
        ps=(PreparedStatement) con.hacerEnunciado(sql);
        rs = con.hacerConsulta(sql);
        try {
            while (rs.next()) {
                Viaje viaje = new Viaje(rs.getInt(1), rs.getInt(2), rs.getDate(3).toString(), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7));
                viajes.add(viaje);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeViaje.class.getName()).log(Level.SEVERE, null, ex);
        }
        return viajes;
    }


    public int agregar(Entidad viaje) {
        int fila =0;
        String sql = "INSERT INTO viaje (id_viaje, id_supervisor, fecha, hora_salida, hora_llegada, nombre_persona_recibe, ultima_supervision)"+
        "VALUES(0, ?,?, ?,?,?,?);";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
        try {
            ps.setInt(1, ((Viaje)(viaje)).getIdSupervisor());
            ps.setString(2, ((Viaje)(viaje)).getFecha());
            ps.setString(3, ((Viaje)(viaje)).getHoraSalida());
            ps.setString(4, ((Viaje)(viaje)).getHoraLlegada());
            ps.setString(5, ((Viaje)(viaje)).getNombrePersonaRecibe());
            ps.setString(6, ((Viaje)(viaje)).getUltimaSupervision());
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeViaje.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;
    }

    public int eliminar(int id) {

        int fila =0;
        String sql ="delete from viaje where id_viaje = ?";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
        try {
            ps.setInt(1, id);
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeViaje.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fila;
    }

    public int modificar(Entidad viaje, int id) {

        int fila =0;
        String sql ="UPDATE viaje SET id_supervisor =?, fecha =?, hora_salida =?, hora_llegada =?, nombre_persona_recibe =?," +
                "ultima_supervision =? WHERE id_viaje = ?;";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
         try {
            ps.setInt(1, ((Viaje)(viaje)).getIdSupervisor());
            ps.setString(2, ((Viaje)(viaje)).getFecha());
            ps.setString(3, ((Viaje)(viaje)).getHoraSalida());
            ps.setString(4, ((Viaje)(viaje)).getHoraLlegada());
            ps.setString(5, ((Viaje)(viaje)).getNombrePersonaRecibe());
            ps.setString(6, ((Viaje)(viaje)).getUltimaSupervision());
            ps.setInt(7, id);
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeViaje.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;
    }


}
